#include <string>
#include "assignment.h"

namespace AST {

    // Construtor Padrão
    Assignment::Assignment(Node* identifier, Node* expression) {
        // Configuração
        this->_setIdentifier(identifier)->_setExpression(expression);
    };

    // Configuração do Identificador
    Assignment* Assignment::_setIdentifier(Node* identifier) {
        // Configuração
        this->_identifier = identifier;
        // Encadeamento
        return this;
    };

    // Configuração de Expressão
    Assignment* Assignment::_setExpression(Node* expression) {
        // Configuração
        this->_expression = expression;
        // Encadeamento
        return this;
    };

    // Apresentação do Identificador
    Node* Assignment::getIdentifier() {
        // Apresentação
        return this->_identifier;
    };

    // Apresentação de Expressão
    Node* Assignment::getExpression() {
        // Apresentação
        return this->_expression;
    };

    // Sobrescrita
    std::string Assignment::toString(int indent) {
        // Apresentação
        return this->getIndentSpaces(indent)
            + "Assignment\n"
            + this->getIdentifier()->toString(indent + 1) + "\n"
            + this->getExpression()->toString(indent + 1);
    };

};

